<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h3>基本语法</h3>

    <h6>与html的结合方式</h6>
    <div>
        内部js  通过script标签 , 可以定义在任意位置 , 但是位置会影响执行顺序
        <br>
        外部js  通过引用js文件 script的src属性引入js文件
        <br>
        1. script可以定义在页面的任何位置 , 但是定义的位置会影响执行顺序
        <br>
        2. 可以定义多个script标签
    </div>

    <hr>
    
    <h6>注释</h6>
    <div>
        单行注释
        <br>
        多行注释
    </div>
    
    <hr>
    
    <h6>数据类型</h6>
    <div>
        原始数据类型 : 基本数据类型
        <ul>
            <li>数字number : 整数 / 小数 / NaN</li>
            <li>string : 字符串</li>
            <li>boolean</li>
            <li>null</li>
            <li>undefined : 没有初始化 , 默认为undefined</li>
        </ul>
        <br>
        引用数据类型 : 对象
    </div>

    <hr>

    <h6>变量</h6>
    <div>
        js是一种弱类型语言 , 在开辟变量存储空间时 , 不定义空间将来存储的数据类型 , 可以存储任意数据类型的数据
        <br>
        语法 var 变量名 = 数据;
        <br>
        typeof(变量) 该方法可以获取变量的实际类型
        <br>
        注意 : 在js中 , 如果运算数不是运算符所要求的类型 , 那么js引擎就会自动进行类型转换
    </div>

    <hr>

    <h6>运算符</h6>
    <div>
        <ul>
            <li>一元运算符</li>
            <li>算术运算符</li>
            <li>赋值运算符</li>
            <li>
                比较运算符
                <ul>
                    <li>类型相同 , 直接比较 如: 字符串 , 按照字典序进行比较</li>
                    <li>类型不同 , 先进行类型转换 , 再比较</li>
                    <li>全等于=== 在比较之前 ,先比较类型,如果类型不一致 , 直接返回false , 不会自动进行类型转换 </li>
                </ul>
            </li>
            <li>
                逻辑运算符
                <ul>
                    其他类型转boolean
                    <li>number转boolean : 0 false , 非0 true</li>
                    <li>除了空字符串 , 其他字符串都为true</li>
                    <li>引用类型null和undefined为true </li>
                    <li>所有非空对象都为true</li>
                </ul>
            </li>
            <li>三元运算符</li>
        </ul>
    </div>
    
    <hr>
    <h4>特殊语法</h4>
    <div>
        <ul>
            <li>语句以分号结尾 , 但是一行只有一句 , 可以省略分号</li>
            <li>变量的定义使用var关键字 , 但是也可以不使用
                <ul>
                    <li>用 : 定义的是一个局部变量</li>
                    <li>不用 : 定义的是一个全局变量</li>
                </ul>
            </li>
            <li>

            </li>
        </ul>
    </div>
    <hr>
    <h6>流程控制语句</h6>
    <div>
        <ul>
            <li>if else</li>
            <li>while</li>
            <li>
                switch
                <ul>
                    <li>在java中 , switch可以接收的类型 byte int short char 枚举 字符串</li>
                    <li>在js中 , 可以接收任意数据类型</li>
                </ul>
            </li>
            <li>do .. while</li>
            <li>for</li>
        </ul>
    </div>
        
</body>

<script>
    // js中 , 会根据运算符的需要进行数据类型转换 , 如果字面值不是数字 , 则转换为 NaN
    var num = +"123";
    alert(typeof(num));
    // boolean转num,false 转 0 . true 转 1
</script>
</html>

